There are two general methods of sending messages when communicating, which may include sending messages and data without regard to whether they are received, known as unreliable delivery, or sending messages and data with some effort to making sure that they are received, known as reliable delivery. An example of unreliable delivery is the typical mail sent via US Post Office's first class, second class, or third class services. Mail may be sent but there is no way to know if the mail has been received. Another common example may be radio or television broadcasts where the broadcasting station sends out signals but has no idea if anybody is receiving the signals. A more recent example may be the user datagram protocol (UDP), a connectionless transport protocol sometimes used in Internet data transfers by applications for email or file transfer. The UDP makes no attempts to verify that a sent packet was actually received by an intended recipient. The UDP's task is finished when it places a packet on a network with a destination address. The application program that used the UDP may ensure reliable delivery with a higher-level protocol.
In contrast, there is another protocol, which is utilized for most Internet transmissions, namely transmission control protocol (TCP). TCP provides reliable transmission of data by providing connection-oriented, end-to-end reliable packet delivery through a network or through the Internet. It does this by assigning sequence numbers to packets to indicate to the destination the number of packets and the order of the packets that may be received. The destination should acknowledge receipt of each packet. Packets that are not acknowledged within a specified time period are retransmitted. If the destination does not receive an expected packet within a specified time, it may request that the packet be resent. The reliability mechanism of TCP allows devices to deal with lost, delayed, duplicate, or misread packets.
Electronic systems, such as personal computers (PCs), use both reliable and unreliable messaging systems to transmit data. A typical bus on the PC is an unreliable delivery system where a sender places data on the bus and assumes that the destination will receive the data. An example of a reliable delivery system used by the PC is the IEEE 1284 parallel port standard, often used for communication between a PC and a printer. The PC places a byte of data on the parallel port and asserts a strobe signal. The printer may receive the data and answer the strobe signal by asserting an acknowledge signal. The host may then deassert the strobe signal, place another byte on the parallel port, and reassert the strobe signal. This type of signal exchange for data delivery may be called “handshaking.”
A problem with handshaking protocols, especially when the handshaking signals are transmitted over a physical medium, a wire, for example, is that it may be difficult to identify the signals and data that are being transferred during real time operation of a system. This may lead to uncertainty during debugging process since the source of the problem may not be able to be pinpointed. The problem may be further exacerbated with a chip since the circuitry and traces inside the chip usually cannot be accessed.
Further limitations and disadvantages of conventional and traditional approaches will become apparent to one of skill in the art, through comparison of such systems with some aspects of the present invention as set forth in the remainder of the present application with reference to the drawings.